import 'dart:io';

class UtilValidate {
  UtilValidate._();

  static UtilValidate? _singleton;

  static UtilValidate get instance => _singleton ??= UtilValidate._();

  /// 检查邮箱格式
  static bool checkIsEmail(String? input) {
    if (input == null || input.isEmpty) return false;
    // 邮箱正则
    String regexEmail = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*\$";
    return RegExp(regexEmail).hasMatch(input);
  }

  /// 检查手机号
  static bool checkPhone(String? input) {
    if (input == null || input.isEmpty) return false;
    // 邮箱正则
    String regex = r'^1[3-9]\d{9}$';
    return RegExp(regex).hasMatch(input);
  }

  // 密码复杂度验证
  static bool checkPassword(String password)  {
    // 包含大小写，特殊字符，12位以上
    return RegExp(r'^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{12,}$').hasMatch(password);
  }



  static bool isImageFile(File file)  {
    final path = file.path;
    // 获取文件扩展名
    final extension = path.split('.').last;
    // 定义支持的图片格式
    final supportedFormats = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp', 'tiff'];
    // 检查文件扩展名是否在支持的格式列表中
    if (supportedFormats.contains(extension.toLowerCase())) {
      // 使用image_size_getter插件来获取图片尺寸
      return true;
    }
    return false;
  }

  /// 检查密码格式
  bool checkPasswordIsValid(String input) {
    String regex = r'^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]+\S{5,12}$';
    return RegExp(regex).hasMatch(input);
  }

  /// 检查字符长度
  bool checkStringLength(String? input, int length) {
    if (input == null || input.isEmpty) return false;
    return input.length >= length;
  }



}
